package com.doublefish.doublefishrobot.utils.encrypt;

import android.util.Base64;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 作者:dugaofeng on 2024/11/8 10:30
 *
 *  对文件进行 base64+md5 的编码
 */
public class FileBase64Encoder {

    public static String hash(File file) {
        try {
            String base64 = base64EncodeFile(file);
            return md5(base64);
        }catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 对文件base64编码
     */
    private static String base64EncodeFile(File file) throws IOException {
        byte[] fileBytes = new byte[(int) file.length()];
        FileInputStream fileInputStream = new FileInputStream(file);
        fileInputStream.read(fileBytes);
        fileInputStream.close();
        return Base64.encodeToString(fileBytes, Base64.DEFAULT);
    }

    /**
     * 对字符串md5加密
     */
    private static String md5(String str) {
        try {
            // 生成一个MD5加密计算摘要
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算md5函数
            md.update(str.getBytes());
            //            BigInteger(1, md.digest()).toString(16);
            return md.digest().toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

}
